code: private Statement statementOf(JsonNode jStatement) {
  
          JsonNode effectNode = jStatement.get(JsonDocumentFields.STATEMENT_EFFECT);
  
          final Effect effect = isNotNull(effectNode)
                                     ? Effect.valueOf(effectNode.asText())
                                     : Effect.Deny ;
  
          Statement statement = new Statement(effect);
  
          JsonNode id = jStatement.get(JsonDocumentFields.STATEMENT_ID);
          if (isNotNull(id)) {
              statement.setId(id.asText());
          }
  
          JsonNode actionNodes = jStatement.get(JsonDocumentFields.ACTION);
          if (isNotNull(actionNodes))
              statement.setActions(actionsOf(actionNodes));
  
          JsonNode resourceNodes = jStatement.get(JsonDocumentFields.RESOURCE);
          if (isNotNull(resourceNodes))
              statement.setResources(resourcesOf(resourceNodes));
  
          JsonNode conditionNodes = jStatement.get(JsonDocumentFields.CONDITION);
          if (isNotNull(conditionNodes))
              statement.setConditions(conditionsOf(conditionNodes));
  
          JsonNode principalNodes = jStatement.get(JsonDocumentFields.PRINCIPAL);
          if (isNotNull(principalNodes))
              statement.setPrincipals(principalOf(principalNodes));
  
          return statement;
      }
docs: Creates a <code>Statement<code> instance from the statement node.
  
  A statement consists of an Effect, id (optional), principal, action, resource,
  and conditions.
  <p>
  principal is the AWS account that is making a request to access or modify one of your AWS resources.
  <p>
  action is the way in which your AWS resource is being accessed or modified, such as sending a message to an Amazon SQS queue, or storing an object in an Amazon S3 bucket.
  <p>
  resource is the AWS entity that the principal wants to access, such as an Amazon SQS queue, or an object stored in Amazon S3.
  <p>
  conditions are the optional constraints that specify when to allow or deny access for the principal to access your resource. Many expressive conditions are available, some specific to each service. For example, you can use date conditions to allow access to your resources only after or before a specific time.
  
  @param jStatement
  JsonNode representing the statement.
  @return a reference to the statement instance created.