/** * Creates a {@link Formula} object from a supplied {@link Ptg} array. * Handles <code>null</code>s OK. * @param ptgs may be <code>null</code> * @return Never <code>null</code> (Possibly empty if the supplied <c>ptgs</c> is <code>null</code>) */ public static Formula Create(Ptg[] ptgs) { if (ptgs == null || ptgs.Length < 1) { return(EMPTY); } int totalSize = Ptg.GetEncodedSize(ptgs); byte[] encodedData = new byte[totalSize]; Ptg.SerializePtgs(ptgs, encodedData, 0); int encodedTokenLen = Ptg.GetEncodedSizeWithoutArrayData(ptgs); return(new Formula(encodedData, encodedTokenLen)); }