internal object CurrentObject_()
 {
     System.Diagnostics.Debug.Assert((!m_parentStack.IsEmpty()));
     org.codehaus.jackson.JsonToken parentType = m_parentStack[m_parentStack.Count - 1];
     if (parentType == org.codehaus.jackson.JsonToken.START_OBJECT)
     {
         com.epl.geometry.JSONObjectEnumerator objIter = m_objIters[m_objIters.Count - 1];
         return(objIter.GetCurrentObject());
     }
     com.epl.geometry.JSONArrayEnumerator arrIter = m_arrIters[m_arrIters.Count - 1];
     return(arrIter.GetCurrentObject());
 }
 /// <exception cref="System.Exception"/>
 internal override org.codehaus.jackson.JsonToken NextToken()
 {
     if (m_parentStack.IsEmpty())
     {
         m_currentToken = org.codehaus.jackson.JsonToken.NOT_AVAILABLE;
         return(m_currentToken);
     }
     org.codehaus.jackson.JsonToken parentType = m_parentStack[m_parentStack.Count - 1];
     if (parentType == org.codehaus.jackson.JsonToken.START_OBJECT)
     {
         com.epl.geometry.JSONObjectEnumerator iterator = m_objIters[m_objIters.Count - 1];
         if (m_currentToken == org.codehaus.jackson.JsonToken.FIELD_NAME)
         {
             object nextJSONValue = iterator.GetCurrentObject();
             if (nextJSONValue is org.json.JSONObject)
             {
                 m_parentStack.Add(org.codehaus.jackson.JsonToken.START_OBJECT);
                 m_objIters.Add(new com.epl.geometry.JSONObjectEnumerator((org.json.JSONObject)nextJSONValue));
                 m_currentToken = org.codehaus.jackson.JsonToken.START_OBJECT;
             }
             else
             {
                 if (nextJSONValue is org.json.JSONArray)
                 {
                     m_parentStack.Add(org.codehaus.jackson.JsonToken.START_ARRAY);
                     m_arrIters.Add(new com.epl.geometry.JSONArrayEnumerator((org.json.JSONArray)nextJSONValue));
                     m_currentToken = org.codehaus.jackson.JsonToken.START_ARRAY;
                 }
                 else
                 {
                     SetCurrentToken_(nextJSONValue);
                 }
             }
         }
         else
         {
             if (iterator.Next())
             {
                 m_currentToken = org.codehaus.jackson.JsonToken.FIELD_NAME;
             }
             else
             {
                 m_objIters.Remove(m_objIters.Count - 1);
                 m_parentStack.Remove(m_parentStack.Count - 1);
                 m_currentToken = org.codehaus.jackson.JsonToken.END_OBJECT;
             }
         }
     }
     else
     {
         System.Diagnostics.Debug.Assert((parentType == org.codehaus.jackson.JsonToken.START_ARRAY));
         com.epl.geometry.JSONArrayEnumerator iterator = m_arrIters[m_arrIters.Count - 1];
         if (iterator.Next())
         {
             object nextJSONValue = iterator.GetCurrentObject();
             if (nextJSONValue is org.json.JSONObject)
             {
                 m_parentStack.Add(org.codehaus.jackson.JsonToken.START_OBJECT);
                 m_objIters.Add(new com.epl.geometry.JSONObjectEnumerator((org.json.JSONObject)nextJSONValue));
                 m_currentToken = org.codehaus.jackson.JsonToken.START_OBJECT;
             }
             else
             {
                 if (nextJSONValue is org.json.JSONArray)
                 {
                     m_parentStack.Add(org.codehaus.jackson.JsonToken.START_ARRAY);
                     m_arrIters.Add(new com.epl.geometry.JSONArrayEnumerator((org.json.JSONArray)nextJSONValue));
                     m_currentToken = org.codehaus.jackson.JsonToken.START_ARRAY;
                 }
                 else
                 {
                     SetCurrentToken_(nextJSONValue);
                 }
             }
         }
         else
         {
             m_arrIters.Remove(m_arrIters.Count - 1);
             m_parentStack.Remove(m_parentStack.Count - 1);
             m_currentToken = org.codehaus.jackson.JsonToken.END_ARRAY;
         }
     }
     return(m_currentToken);
 }