public bool Equals(NewType <T> other) => !ReferenceEquals(other, null) && GetType() == other.GetType() && Value.Equals(other.Value);
public int CompareTo(NewType <T> other) => !ReferenceEquals(other, null) && GetType() == other.GetType() ? Comparer <T> .Default.Compare(Value, other.Value) : failwith <int>("Mismatched NewTypes used in comparison");
public NewType <T> Multiply(NewType <T> rhs) => GetType() == rhs.GetType() ? (NewType <T>) NewType.Construct(GetType(), TypeDesc.Multiply(Value, rhs.Value, TypeDesc <T> .Default)) : failwith <NewType <T> >("Mismatched NewTypes in multiply");
public NewType <T> Divide(NewType <T> rhs) => GetType() == rhs.GetType() ? (NewType <T>) NewType.Construct(GetType(), TypeDesc.Divide(Value, rhs.Value, TypeDesc <T> .Default)) : failwith <NewType <T> >("Mismatched NewTypes in divide");
public NewType <T> Subtract(NewType <T> rhs) => GetType() == rhs.GetType() ? (NewType <T>) NewType.Construct(GetType(), TypeDesc.Subtract(Value, rhs.Value, TypeDesc <T> .Default)) : failwith <NewType <T> >("Mismatched NewTypes in subtract");
public NewType <T> Append(NewType <T> rhs) => GetType() == rhs.GetType() ? (NewType <T>) NewType.Construct(GetType(), TypeDesc.Append(Value, rhs.Value, TypeDesc <T> .Default)) : failwith <NewType <T> >("Mismatched NewTypes in append/add");