code: public final NotJoined notJoinedFrom(String joinProperty) {
          return notJoinedFrom
              (ChainedProperty.parse(StorableIntrospector.examine(mType), joinProperty));
      }
docs: Removes a join property prefix from all applicable properties of this
  filter. For example, consider two Storable types, Person and
  Address. Person has a property "homeAddress" which joins to Address. A
  Person filter might be "homeAddress.city = ? & lastName = ?". When not
  joined from "homeAddress", it becomes "city = ?" on Address with a
  remainder of "lastName = ?" on Person.
  
  <p>The resulting remainder filter (if any) is always logically and'd to
  the not joined filter. In order to achieve this, the original filter is
  first converted to conjunctive normal form. And as a side affect, both
  the remainder and not joined filters are {@link #bind bound}.
  
  @param joinProperty property to not join from
  @return not join result
  @throws IllegalArgumentException if property does not exist or if
  property does not refer to a Storable