private bool AddTerm(Term value) { var added = true; if (_isFraction) { if (_terms.Length > 0) { value = new PrimitiveTerm(UnitType.Unknown, _terms[_terms.Length - 1] + "/" + value); } _terms.SetLastTerm(value); _isFraction = false; } else if (_functionBuffers.Count > 0) { _functionBuffers.Peek().TermList.Add(value); } else if (_terms.Length == 0) { _terms.AddTerm(value); } else if (_parsingContext == ParsingContext.InSingleValue) { _terms.AddTerm(value); } else { added = false; } return(added); }