I'm new to PlantUML but I'd really like to start using it more. However, every time I try to read about it I get very confused at how PlantUML decides what to output. It seems that there are various types (component, class, actor, etc) and associated operations (various links/arrows), but it turns out that some combinations of types can't be mixed within a "context" (eg. single block between @startuml/@enduml). It seems that there is some form of type inference involved when not explicitly declaring types, but it's not documented and feels a bit magical.
So, is there some overview of the inner working of PlantUML, which explains how types are inferred, what can be mixed and why/why not?