code: @Override
      public HashMap<String, EntityProperty> writeEntity(final OperationContext opContext) throws StorageException {
          try {
              return writeEntityWithReflection(this);
          }
          catch (final IllegalAccessException e) {
              throw new StorageException(StorageErrorCodeStrings.INTERNAL_ERROR,
                      SR.ATTEMPTED_TO_SERIALIZE_INACCESSIBLE_PROPERTY, Constants.HeaderConstants.HTTP_UNUSED_306, null, e);
          }
          catch (final InvocationTargetException e) {
              throw new StorageException(StorageErrorCodeStrings.INTERNAL_ERROR,
                      SR.EXCEPTION_THROWN_DURING_SERIALIZATION, Constants.HeaderConstants.HTTP_UNUSED_306, null, e);
          }
      }
docs: Returns a map of property names to {@link EntityProperty} data typed values created by serializing this table
  entity instance.
  <p>
  This method invokes {@link #writeEntityWithReflection} to serialize the table entity instance the method is
  called on using reflection. Table entity classes that extend {@link TableServiceEntity} can take advantage of
  this behavior by implementing getter and setter methods for the particular properties of the table entity in
  Microsoft Azure storage the class represents. Note that the property names "PartitionKey", "RowKey", and
  "Timestamp" are reserved and will be ignored if set on other methods with the {@link StoreAs} annotation.
  <p>
  Override this method in classes that extend {@link TableServiceEntity} to invoke custom serialization code.
  
  @param opContext
  An {@link OperationContext} object used to track the execution of the operation.
  @return
  A <code>java.util.HashMap</code> of <code>String</code> property names to {@link EntityProperty} data
  typed values representing the properties serialized from this table entity instance.
  @throws StorageException
  if an error occurs during the serialization.