private Maybe <ILineNode> ParsePreprocessor(MergeableGenerator <Token> tokens, ImmutableStack <Closure> scopes) { head = tokens.Current; tokens.MoveNext(); //Note: Not a ParseParamList because no commas. IList <IParamNode> paramList = ParsePreprocParamList(tokens, scopes); Maybe <ILineNode> retVal = directiveHandler.HandleDirective(this, head, paramList, tokens); if (!retVal.IsNothing) { CheckDataWrite(retVal.FromJust.Size); CurrentOffset += retVal.FromJust.Size; } return(retVal); }