int  _CheckOuterplanarObstructionIntegrity(graphP theGraph)
{
int  degrees[4], imageVerts[5];

     if (_getImageVertices(theGraph, degrees, 3, imageVerts, 5) != OK)
         return NOTOK;

     if (_TestForCompleteGraphObstruction(theGraph, 4, degrees, imageVerts) == TRUE)
     {
         return OK;
     }

     if (_TestForK23GraphObstruction(theGraph, degrees, imageVerts) == TRUE)
     {
         return OK;
     }

/* We get here only if we failed to recognize an outerplanarity
    obstruction, so we return failure */

     return NOTOK;
}
int  _K23Search_CheckObstructionIntegrity(graphP theGraph, graphP origGraph)
{
     // When searching for K2,3, we ensure that theGraph is a subgraph of
     // the original graph and that it contains a K2,3 homeomorph
     if (theGraph->embedFlags == EMBEDFLAGS_SEARCHFORK23)
     {
         int  degrees[4], imageVerts[5];

         if (_TestSubgraph(theGraph, origGraph) != TRUE)
             return NOTOK;

         if (_getImageVertices(theGraph, degrees, 3, imageVerts, 5) != OK)
             return NOTOK;

         if (_TestForK23GraphObstruction(theGraph, degrees, imageVerts) == TRUE)
         {
             return OK;
         }

         return NOTOK;
     }

     // When not searching for K2,3, we let the superclass do the work
     else
     {
        K23SearchContext *context = NULL;
        gp_FindExtension(theGraph, K23SEARCH_ID, (void *)&context);

        if (context != NULL)
        {
            return context->functions.fpCheckObstructionIntegrity(theGraph, origGraph);
        }
     }

     return NOTOK;
}