code: private void boundaryAreaBoundaryArea_(int half_edge, int id_a, int id_b) {
  		if (m_matrix[MatrixPredicate.BoundaryBoundary] == 1)
  			return;
  
  		int parentage = m_topo_graph.getHalfEdgeParentage(half_edge);
  
  		if ((parentage & id_a) != 0 && (parentage & id_b) != 0) {
  			m_matrix[MatrixPredicate.BoundaryBoundary] = 1;
  			return;
  		}
  
  		if (m_matrix[MatrixPredicate.BoundaryBoundary] != 0) {
  			if (m_topo_graph.getHalfEdgeUserIndex(m_topo_graph
  					.getHalfEdgePrev(m_topo_graph.getHalfEdgeTwin(half_edge)),
  					m_visited_index) != 1) {
  				int cluster = m_topo_graph.getHalfEdgeTo(half_edge);
  				int clusterParentage = m_topo_graph
  						.getClusterParentage(cluster);
  
  				if ((clusterParentage & id_a) != 0
  						&& (clusterParentage & id_b) != 0) {
  					m_matrix[MatrixPredicate.BoundaryBoundary] = 0;
  				}
  			}
  		}
  	}
docs: with the boundary of area B.