public IEnumerable <StatementSyntax> GetMoveNext(StatementSyntax finalizer) { yield return(SF.IfStatement(SF.BinaryExpression(SyntaxKind.GreaterThanExpression, SF.PrefixUnaryExpression(SyntaxKind.PreIncrementExpression, SF.IdentifierName(bitIndex)), SH.Literal(7)), SF.Block(_wrapped.GetMoveNext(finalizer).Concat(new StatementSyntax[] { SH.Assignment(SF.IdentifierName(cachedInput), _wrapped.GetInput()), SH.Assignment(SF.IdentifierName(bitIndex), SH.Literal(0)) })), SF.ElseClause(SH.Assignment(SF.IdentifierName(cachedInput), SH.Literal(1), SyntaxKind.RightShiftAssignmentExpression)))); }