I was going through types.jl from the GeometryTypes module, and I found the following is the definition of the Pyramid immutable:

```
immutable Pyramid{T} <: GeometryPrimitive{3, T}
middle::Point{3, T}
length::T
width ::T
end
```

This was the only test example using Pyramid in the test folder:

`@test Pyramid(Point(0,0,0),1,2) == Pyramid{Int}(Point{3,Int}((0,0,0)),1,2)`

Can someone help me figure out what ‘middle’ refers to, assuming length and width refer to the base’s length and width? Also there seems to be no restriction for T to be a Number, so does that mean it can be an arbitrary vector in 3D without violating any other function’s assumption of length and width? If so, I assume the vectors can have any angle between them. Someone please let me know if I am missing a thing or two. Thank you.