public function get_property( $slug, $child_slug = '' ) {
		$boxes = $this->get_boxes();
		$parts = preg_match( '/\[\d+\]/', $slug ) ? preg_split( '/\[\d+\]/', $slug ) : explode( '[', $slug );
		$parts = array_map( function ( $part ) {
			return preg_replace( '/(\[|\])/', '', $part );
		}, $parts );

		if ( count( $parts ) > 1 ) {
			$property = null;

			for ( $i = 0, $l = count( $parts ); $i < $l; $i++ ) {
				$child    = isset( $parts[$i + 1] ) ? $parts[$i + 1] : '';
				$property = $this->get_property( $parts[$i], $child );

				if ( isset( $parts[$i + 1] ) ) {
					$i++;
				}
			}

			/**
			 * Modify property.
			 *
			 * @param  Papi_Core_Property $property
			 */
			return apply_filters( 'papi/get_property', $property );
		}

		foreach ( $boxes as $box ) {
			foreach ( $box->properties as $property ) {
				$property = papi_get_property_type( $property );

				if ( papi_is_property( $property ) && $property->match_slug( $slug ) ) {
					if ( empty( $child_slug ) ) {
						/**
						 * Modify property.
						 *
						 * @param  Papi_Core_Property $property
						 */
						return apply_filters( 'papi/get_property', $property );
					}

					$property = $property->get_child_property( $child_slug );

					if ( papi_is_property( $property ) ) {
						/**
						 * Modify property.
						 *
						 * @param  Papi_Core_Property $property
						 */
						return apply_filters( 'papi/get_property', $property );
					}
				}
			}
		}
	}