public static void snapAnchor(Collection<ConstraintWidget> widgets,ConstraintWidget widget,ConstraintAnchor anchor,SnapCandidate candidate){
  if (widget.getParent() != null) {
    if (!anchor.isVerticalAnchor()) {
      checkHorizontalParentMarginSnap(anchor,ConstraintAnchor.Type.RIGHT,-DEFAULT_MARGIN,candidate);
      checkHorizontalParentMarginSnap(anchor,ConstraintAnchor.Type.LEFT,DEFAULT_MARGIN,candidate);
    }
 else {
      checkVerticalParentMarginSnap(anchor,ConstraintAnchor.Type.BOTTOM,-DEFAULT_MARGIN,candidate);
      checkVerticalParentMarginSnap(anchor,ConstraintAnchor.Type.TOP,DEFAULT_MARGIN,candidate);
    }
  }
  for (  ConstraintWidget w : widgets) {
    if (w == widget) {
      continue;
    }
    ArrayList<ConstraintAnchor> anchorsTarget=w.getAnchors();
    for (    ConstraintAnchor at : anchorsTarget) {
      snapCheck(anchor,at,candidate,CONNECTION_SLOPE);
    }
  }
}

public static void snapAnchor ( Collection < ConstraintWidget > widgets , ConstraintWidget widget , ConstraintAnchor anchor , SnapCandidate candidate ) { if ( widget . getParent ( ) != null ) { if ( ! anchor . isVerticalAnchor ( ) ) { checkHorizontalParentMarginSnap ( anchor , ConstraintAnchor . Type . RIGHT , - DEFAULT_MARGIN , candidate ) ; checkHorizontalParentMarginSnap ( anchor , ConstraintAnchor . Type . LEFT , DEFAULT_MARGIN , candidate ) ; } else { checkVerticalParentMarginSnap ( anchor , ConstraintAnchor . Type . BOTTOM , - DEFAULT_MARGIN , candidate ) ; checkVerticalParentMarginSnap ( anchor , ConstraintAnchor . Type . TOP , DEFAULT_MARGIN , candidate ) ; } } for ( ConstraintWidget w : widgets ) { if ( w == widget ) { continue ; } ArrayList < ConstraintAnchor > anchorsTarget = w . getAnchors ( ) ; for ( ConstraintAnchor at : anchorsTarget ) { snapCheck ( anchor , at , candidate , CONNECTION_SLOPE ) ; } } }
try to find snapping candidates for the given anchor
