static List<IExpression> _FillErUp(IEnumerable<IExpression> nodes, SymbolReader symbolReader) { var childrenForNextLevel = new List<IExpression>(); foreach(var node in nodes) { if(symbolReader.IsEndOfSymbols()) break; var symbol = symbolReader.ReadNextSymbol(); var theOperator = _GetOperator(symbol); node.SetLiteral(symbol); node.SetOperator(theOperator); var childrenToCreateCount = _GetNumberOfChildrenFor(theOperator); for(var i=0; i<childrenToCreateCount; i++) { var operand = new Operand(); node.Add(operand); childrenForNextLevel.Add(operand); } } return childrenForNextLevel; }