code: def _preprocess(self, lhs, rhs):
      contains_lhs = lhs.contains(rhs)
      contains_rhs = rhs.contains(lhs)
      contains_properly_lhs = _basic_contains_properly_any(lhs, rhs)
      contains_properly_rhs = _basic_contains_properly_any(rhs, lhs)
      return ~(contains_lhs | contains_rhs) & (
          contains_properly_lhs | contains_properly_rhs
      )
  
file_path: cuspatial/python/cuspatial/cuspatial/core/binpreds/feature_overlaps.py
imports: import cudf
  from cuspatial.core.binpreds.basic_predicates import _basic_contains_properly_any
  from cuspatial.core.binpreds.binpred_interface import BinPred, ImpossiblePredicate
  from cuspatial.core.binpreds.feature_contains import ContainsPredicate
  from cuspatial.core.binpreds.feature_equals import EqualsPredicateBase
  from cuspatial.utils.binpred_utils import LineString, MultiPoint, Point, Polygon, _false_series
  from cuspatial.utils.column_utils import has_same_geometry
label_desc: Use image node_id 1 for calling the PolygonPolygonOverlaps obj's underlying member method code with example usage: obj._preprocess(lhs, rhs) and returns: unknown